digitalmars.D.announce - Diamond Full-stack MVC / Template Engine - v2.7.0 Released!
bauss <jj_1337 live.dk> writes:
I finally got around and fixed the last corners here and there. If you wonder what Diamond is, then it's a library for developing full-stack MVC web-applications based on vibe.d. It contains a lot of features (Which you can see in the READ ME) To name a few of the key features: * Full control over requests / responses when wanted. * "Websettings" file that lets you control requests / responses for: * Before a request is handled. * After a request has been handled. * When an error occurres. * When a page or controller action wasn't found. * When a static file has been requested. * Multiple static file paths * Let's you bind to multiple ip addresses and ports. * Let's you control default headers for each type of request (default, static files, errors, not found etc.) * Uses vibe.d for backend, so it's very powerful and all vibe.d features can be used with Diamond * Easy control over the application's type using *static if* constructs. * isWeb (true for both web-servers and web-apis.) * isWebServer (true for web-servers) * isWebApi (true for web-apis) * isWeb, isWebServer and isWebApi will be false for standalone. * ACL & Authentication tied to it * Separate authentication that can be used either with or without the ACL * CSRF Protection * Easy integrated cookie/session API. * The network can be restricted to specific ips. * Transactions * Unittesting * Logging * i18n * Version-control * Route rewriting * Database Integration & Object Relational Mapping * Websockets * Specialized Routes (Can fetch resources external internal or local) * Views are parsed at compile-time, thus rendering of views are super fast * Views can have layout views * Views have a metadata section that lets you change view configurations such as its controller, model, layout, route and placeholders. * Views have placeholders and layout view's can access the render view's placeholders. * Views can encode their data * Has a rich syntax that allows for complex and innovative rendering. * Easy access to the current request / response using the properties: *httpRequest* and *httpResponse* * Can render other views within itself * Any type of D code can be written within views. * Allows for sections, which is useful to only render a part of the view. (Very useful for responsive designs) * Can be passed to controllers by their base view * Layout views can be changed dynamically * Expensive views can be cached. * Flash-messages * Controller actions are mapped through attributes. (By default the route name will be the name of the function.) * If wanted actions can be mapped manually, but that's a legacy feature. * Controller actions can easily control how the response is handled, as they require a status returned * Status.success (Will continue to handle the request.) * Status.end (Will end the request; useful for json responses etc. *Note: using the json() function already does it for you.)* * Status.notFound (Will issue a 404 status for the response.) * Can map mandatory actions that are executed on every requests. (Useful for authentication etc.) * Easy integrated authentication (Can be combined with ACL) * RESTful * Specific actions can be restricted to specific ips. After 2.7.0 I have decided to drop backward compatibility as 2.7.0 barely introduces any major breaking changes, but it fixes a lot of issues and now works with vibe.d 0.8.2 and mysql-native 2.1.0!! Since last announced update the following has been added: * i18n messages can now be added dynamically. * Support for mysql-native 2.1.0 * Support for vibe.d 0.8.2 * Removed backward compatibility with older vibe.d versions * Slowly moving away from shared static constructors. (Currently Diamond implements a main function for a start.) * Better internal usage of placeholders (They now append to the view's content, instead of using std.array.replace.) * Removed the rootPath property from the View class, because it was expensive and kind of useless. * You can now retrieve placeholder values from views * Route creation was made public * Added new view functionality such as the ability to delay view render for layouts etc. * Added the ability to use a single view for routing * Added a view constructor extension type Other than that minor optimizations and bug fixes has also taken place. Github: https://github.com/DiamondMVC/Diamond Dub: https://code.dlang.org/packages/diamond (Currently waiting for dub to update the package!) In the last announcement for Diamond I said I'd implement a SEO API and SOAP support and it's still planned, but it wasn't prioritized like updating to vibe.d 0.8.2 and mysql-native 2.1.0 I still plan to implement it within the near future! I think Diamond has reached a stable phase, which means I can focus on adding tutorials, examples etc. I also need to pick up working on the official Diamond website, but I have a lot of actual paid work that I can't just put away at the moment, so my time working on actual Diamond is limited right now. I'd like to give a special thanks to everyone who contributes to D, vibe.d and mysql-native, because without them Diamond wouldn't be where it's at! Anyway, Thank you for your time!
Adam D. Ruppe <destructionator gmail.com> writes:
And api documentation for the new version! http://diamond.dpldocs.info/v2.7.0/index.html
Mike Parker <aldacron gmail.com> writes:
On Wednesday, 7 March 2018 at 22:37:36 UTC, bauss wrote:I finally got around and fixed the last corners here and there. If you wonder what Diamond is, then it's a library for developing full-stack MVC web-applications based on vibe.d. It contains a lot of features (Which you can see in the READ ME)And you can read more about the project in the Project Highlight bauss did on the D Blog a while back: https://dlang.org/blog/2017/11/20/project-highlight-diamond-mvc-framework/
bauss <jj_1337 live.dk> writes:
On Wednesday, 7 March 2018 at 22:51:10 UTC, Adam D. Ruppe wrote:And api documentation for the new version! http://diamond.dpldocs.info/v2.7.0/index.htmlThanks for updating it! On Thursday, 8 March 2018 at 01:38:55 UTC, Mike Parker wrote:On Wednesday, 7 March 2018 at 22:37:36 UTC, bauss wrote:Yes! Thanks a lot for the recognition!I finally got around and fixed the last corners here and there. If you wonder what Diamond is, then it's a library for developing full-stack MVC web-applications based on vibe.d. It contains a lot of features (Which you can see in the READ ME)And you can read more about the project in the Project Highlight bauss did on the D Blog a while back: https://dlang.org/blog/2017/11/20/project-highlight-diamond-mvc-framework/